﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace Projeto
{
    class TelaEscolhaModoDeJogo : Tela
    {
        public static int INTERVALO_TITULO = 50;
        Texture2D textura; // Imagem de fundo da cena
        Rectangle RetanguloModo1 = new Rectangle();
        Rectangle RetanguloModo2 = new Rectangle();
        SpriteFont fonte;
        SoundEffect Click;

        Song musicaJogo; // Música do jogo
        bool tocandoMusica = false; // Booleana-gatilho para tocar a música

        public TelaEscolhaModoDeJogo(Jogo jogo)
            : base(jogo)
        {
            this.textura = jogo.Content.Load<Texture2D>("Cartas/background_grass");

            // Carrega fonte do título do jogo
            this.fonte = jogo.Content.Load<SpriteFont>("Fonts/gameFont");

            //Carrega efeito de Click
            this.Click = jogo.Content.Load<SoundEffect>("Som/Efeitos Sonoros/click_normal");

            // Carrega a música do jogo
            musicaJogo = jogo.Content.Load<Song>("Som/Trilha Sonora/Musica_Jogo_com_intro_01");
            MediaPlayer.IsRepeating = true;
        }

        public override void Update(GameTime tempoJogo)
        {
            // Declara uma variável para quardar qual tecla foi precionada
            KeyboardState teclado = Keyboard.GetState();
            MouseState keyState = Mouse.GetState();

            // Tocar a música do jogo
            if (!tocandoMusica)
            {
                MediaPlayer.Play(musicaJogo);
                tocandoMusica = true;
            }

            // Verifica se foi pressionado a tecla I foi precionada, se sim volta para a tela intro
            if (teclado.IsKeyDown(Keys.Back))
            {
                jogo.gerenciadorTelas.MudaTela(EstadoJogo.Intro);
            }

            if (keyState.LeftButton == ButtonState.Pressed)
            {
                if (RetanguloModo1.Contains(keyState.X, keyState.Y))
                {
                    // Troca de Cena (tela de introdução)
                    jogo.gerenciadorTelas.MudaTela(EstadoJogo.GameEncontre);
                    Click.Play();

                }
                if (RetanguloModo2.Contains(keyState.X, keyState.Y))
                {
                    // Troca de Cena (tela de Créditos)
                    jogo.gerenciadorTelas.MudaTela(EstadoJogo.GameReflexo);
                    Click.Play();
                }
            }

            base.Update(tempoJogo);
        }

        public override void Draw(Microsoft.Xna.Framework.GameTime tempoJogo)
        {
            // Desenha a tela de fundo
            spriteBatch.Draw(textura, Vector2.Zero, Color.White);

            string frase = "Escolha o Modo de Jogo:";

            // Desenha o título do jogo
            Vector2 posicaoTituloJogo = new Vector2(
                jogo.Window.ClientBounds.Width / 2 - fonte.MeasureString(frase).X / 2,
                jogo.Window.ClientBounds.Height / 2);

            spriteBatch.DrawString(fonte, frase, posicaoTituloJogo, Color.Navy);

            Vector2 posicaoTituloJogar = posicaoTituloJogo;
            posicaoTituloJogar.Y = posicaoTituloJogo.Y + INTERVALO_TITULO;

            spriteBatch.DrawString(fonte, "Encontre", posicaoTituloJogar, Color.Navy);
            RetanguloModo1 = new Rectangle(
                (int)posicaoTituloJogar.X,
                (int)posicaoTituloJogar.Y,
                (int)fonte.MeasureString("Encontre").X,
                (int)fonte.MeasureString("Encontre").Y);


            Vector2 posicaoTituloCredito = posicaoTituloJogar;
            posicaoTituloCredito.Y = posicaoTituloJogar.Y + INTERVALO_TITULO;
            RetanguloModo2.Y = (int)(posicaoTituloJogar.Y + INTERVALO_TITULO);
            spriteBatch.DrawString(fonte, "Reflexo", posicaoTituloCredito, Color.Navy);
            RetanguloModo2 = new Rectangle(
                (int)posicaoTituloCredito.X,
                (int)posicaoTituloCredito.Y,
                (int)fonte.MeasureString("Reflexo").X,
                (int)fonte.MeasureString("Reflexo").Y);

            base.Draw(tempoJogo);
        }
    }
}
